3

PHP
目录========

  1. php介绍 2
  2. 基础 31
  3. 运算符 70
  4. 流程控制 77
  5. 函数 91
  6. 文件引入 100
  7. 字符串/数组 104
  8. 数据库 134
  9. 交互 153
  10. 新闻管理 172
  11. http协议 172

目录========

1.php介绍

1.1.概念
    1.1.1.personal home page
        php是运行在服务器端的(开源)脚本语言
    1.1.2.优点
        1.1.2.1.1、开源(open source)、跨平台、稳定
        1.1.2.1.1.经典组合 WAMP,LAMP
            Wamp==Windows  Apache MySQL PHP 本机测试的首选
            Lamp==Linux Apache  MySQL  PHP 线上生产环境
        1.1.2.2.2、入门简单、开发成本低
        1.1.2.3.3、支持大多数主流数据库MySQL\oracle\Redis\SQL等
        1.1.2.4.4、框架齐全使得开发效率大大提高 如Laravel\ThinkPHP 国产Yii\Coderlgniter\Sysfony
        1.1.2.5.5、解释形脚本语言,无需在客户端生成.dll .exe可执行文件
    1.1.3.缺点
        1.1.3.1.当项目规模较大时 维护成本较高
    1.1.4.版本
        1.1.4.1.目前市面上最多的是PHP5
        最新版本PHP7.2慢慢想强类型语言靠拢
1.2.软件架构介绍
    1.2.1.C/S架构
        1.2.1.1.Client客户端/Server服务器 访问不同的服务器,需要各自安装不同的客户端软件。如:QQ,迅雷,百度云等
        1.2.1.2.优点 是访问速度快,用户直接跟数据交互
    1.2.2.B/S架构
        1.2.2.1.B/S是特殊的C/S模式。运行在浏览器端。未来软件的大趋势。百度网站,淘宝网站
        1.2.2.2.优点是不需要安装客户端软件 但目前手机端的网速和硬件的条件跟不上 会出现访问留白现象影响用户体验
1.3.web基本概念
    1.3.1.网站
        1.3.1.1.静态网站 由静态的网页代码(html css js)组成 没有数据的交互
        1.3.1.2.动态网站 通过用户请求动态生成不同页面,用户跟服务器进行数据的交互
    1.3.2.服务器
        1.3.2.1.概念
            1.3.2.1.1.安装了服务器软件 计算机,提供服务支持 比如安装了Apache服务器软件电脑就是Apache服务器
        1.3.2.2.常用服务器
            1.3.2.2.1.Apache HTTP Server 开源的网页服务器 跨平台 安全性高 末前最流行的WEB服务器
            1.3.2.2.2.Nginx 轻量级高性能 占用内存小 并发能力强 常用于分布式
            1.3.2.2.3.ISS 微软提供的基于window的服务器软件
    1.3.3.协议
        1.3.3.1.IP
            1.3.3.1.1.占用四个字节 每个字段范围是0-255 每个字节占用8个比特位
            1.3.3.1.2.127.0.01 本机ip
            1.3.3.2.TCP/IP 三次握手协议 发出请求—>对方接受并回应—>接收返回信息再次返回
    1.3.4.域名
        1.3.4.1.localhost 本机
        1.3.4.2.便于记忆 最终通过DNS解析成ip访问
        1.3.4.3.DNS解析器
            1.3.4.3.1.将域名解析成对应的IP地址。
                DNS就是一台24小时运行的服务器
            1.3.4.3.2.DNS解析器先走本地,本地没有才访问远程dns
        1.3.4.4.常用 .com .cn .gov
    1.3.5.Host文件
        1.3.5.1.Host文件是隐藏的系统文件没有扩展名 C:\Windows\System32\drivers\etc\hosts
        1.3.5.2.本地DNS
    1.3.6.端口
        1.3.6.1.作用 监听服务
        1.3.6.2.一台计算有可以同时提供多种服务 如WEB  FTP服务
        1.3.6.3.web服务端口:80
                MySQL服务:3306
    1.3.7.URL
        1.3.7.1.概念
             uniform resource locator 访问互联网资源的标识符,
        1.3.7.2.组成
        1.3.7.2.1.http://www.baidu.com
        1.3.7.2.2.网络协议 http/https
        1.3.7.2.3.端口号:80 默认端口可以省略
        1.3.7.2.4.服务器名www.baidu.con
        1.3.7.2.5.资源名 index.html
            文件名可带参数用?分割多个参数之间用&连接
            http://www.baidu.com/index.php?username=ss&password=ss
        1.3.7.2.6.uri  统一资源定位符 域名后面的 index.php?username=ss&password=ss
    1.3.8.访问流程
        1.3.8.1.用户发送请求—>服务响应并返回静态文件,动态问价教给php模块处理在返回—>
1.4.环境搭建
    1.4.1.Wampserver 下载安装
    1.4.2.配置文件
        1.4.2.1.1、安装目录下bin\apache2.2.2\conf\httpd.conf
            去掉文件中下列注释 #
            Include conf/extra/httpd-vhost.conf
        1.4.2.2.2、配置虚拟站点
            安装目录下bin\apache\apache2.4.23\conf\extra\httpd-vhosts.conf
            <VirtualHost *:80>
            ServerName  自定义域名
            ServerAlias  自定义域名
            DocumentRoot ""服务器文件路径""
            DirectoryIndex  index.html  index.php  index.htm
            <Directory ""服务器文件路径"">
            Options   indexes FollowSymLinks
            AllowOverride All
            Order  Deny,Allow
            Allow from all
            </Directory>
            </VirtualHost>
        1.4.2.3.3、安装目录下bin\apache2.2.2\conf\httpd.conf 将Require all denied注释 换行添加 allow from all
        1.4.2.4.4、在host文件中添加域名 c:/system32/drivers/etc/host

添加 127.0.0.1 自定义域名

2.基础

2.1.php标记
    2.1.1.<?php ....?>
    2.1.2.PHP本身支持与HTML混编
        混编的文件后缀一般为.php,Apache才会调用PHP解析
        纯PHP文件一般省略结束标记。 在于防止结束标志后的空白字符输出
        混编时,先解析PHP代码,剩余代码发给浏览器解析
    2.1.3.单行注释//
        多行注释/*   */
2.2.变量
    2.2.1.概念
        2.2.1.1.值可以改变的量(variable),用来存储数据的单位或者空间
    2.2.2.声明
        2.2.2.1.以$开头
        2.2.2.2.由英文字母、数字、下划线等多个字符组成,以字母或者下划线开头
        2.2.2.3.变量命名严格区分大小写 但PHP函数不区分大小写
    2.2.3.赋值
        2.2.3.1.= 赋值声明一般同时进行
        2.2.3.2.php是弱类型语言类型由值决定
    2.2.4.手动删除变量
        2.2.4.1.unser(变量)
2.3.可变变量
    2.3.1.一个变量的值是另一个变量的值
        $a =""bb"";
        $bb = ""abc"";
        $$a --->""abc""
2.4.常量
    2.4.1.概念 在脚本运行周期中值不会变的量  重新定义或赋值
    2.4.2.define(“常量名“,值) const 常量名 = 值;
2.5.输出语句
    2.5.1.解决输出乱码问题
        2.5.1.1.在开始php标签后指定编码格式 header(""content-type:text/html;charset=utf-8"")
    2.5.2.echo语句
        2.5.2.1.输出字符串、变量及表达式 可以同时输出多个变量及字符串。不是函数,是语言结构
    2.5.3.print语句
        2.5.3.1.可以输出字符串及变量及表达式 与echo语句的区别为:print不支持同输出多个字符串及变量。
        相同点:为语言结构,不是函数
    2.5.4.var_dump()
        2.5.4.1.输出一个或者多个变量的类型,长度及值 一般用于打印复杂变量(结合pre标记格式化输出如数组,对象等
    2.5.5.print_r()
        2.5.5.1.输出变量的值。一般用于打印变量。对于字符串类型、整型、浮点型,打印变量本身 不能打印布尔类型的原始值
        
2.6.数据类型
    2.6.1.标量数据类型
        2.6.1.1.不可再分割的数据类型 如整型、浮点型、字符串类型、布尔类型
    2.6.2.复合数据类型
        2.6.2.1.由多种数据类型的组成 如数组 对象
    2.6.3.特殊数据类型
        2.6.3.1.Null 为null的几种情况:变量未赋值、变量被删除、变量被赋值为null
    2.6.3.2.Resource 资源型,为第三方数据的引用(如成功的数据库连接、绘制图像创建画布、打开文件、打开文件夹等
    2.6.4.整形int
        2.6.4.1.八进制是以0开头的数字 十六进制是0x开头的数字
                十进制为中间桥梁 转换
                二进制  binary --->  bin
                八进制  octal  -->  oct
                十进制   decimal -->  dec
                十六进制 hexadecimal --->  hex
        2.6.4.2.可以使用十进制,十六进制,八进制或 二进制表示 可选的符号(- 或者 +)。
        2.6.4.3.注意:八进制数遇到8,9则后面其余数字会被忽略 整数溢出,当数值超出整型的范围会呗判定成float
        2.6.4.4.类型转换
            2.6.4.4.1.(int) 或 (integer) 强制转换 浮点型转换 int会向下取整
    2.6.5.浮点型
        2.6.5.1.PHP只实现了双精度,占8个字节
        2.6.5.2.注意浮点数计算会出现问题0.1+0.2 !=0.3
    2.6.6.字符型string
        2.6.6.1.数字,字母,下划线,汉字,符号等等,但是必须用引号包起来
        2.6.6.2.注意 双引号中变量会被解析 而单引号不会
        2.6.6.3.类型转换
           . 字符串拼接符
            (string) 或 strval()  函数来转变成字符串
            bool—>string //TRUE>> ""1""。 FALSE  >> """" ,互转
            int/float—>string 整数  被转换为数字的字面样式的 string 
            string->int/float 含有“.”,""e""E""会被转换成int 其余为float
    2.6.7.布尔型bool
        2.6.7.1.true和false不区分大小写
        2.6.7.2.类型转换
            (bool) 或 (boolean) 强制转换
            当转换为 boolean  时,以下值被认为是 FALSE : 
                1. 布尔值 FALSE  本身  
                2.(零)整型值 0  浮点型值 0.0
                3.  空字符串,以及字符串 ""0""  
                4. 不包括任何元素的数组
                5  特殊类型 NULL(包括尚未赋值的变量)  
                6. 从空标记生成的 SimpleXML 对象 
    2.6.8.数组
        2.6.8.1.PHP的数组用array关键字声明,可以保存任何类型的数据,是一个复合数据类型
            格式 : array('a',2)
    2.6.9.Isset(变量)判断变量是否设置
    2.6.10.Empty()判断变量是否为空。PHP中认为变量的值为:""""、0、""0""、NULL、FALSE、[]时,变量虽然定义了,但是无实际的意义。为空
    
    

3.运算符

3.1.递增/递减 类型转换  运算符
    ++ -- ~ (int) (float) (string) (array) (object) (bool) @
3.2.算术运算符
    +  - / * %
3.3.赋值运算符
    = += -= *= /= .= %= &= |= ^= <<= >>= => 
3.4.逻辑运算符
    3.4.1.And  &&  与
    3.4.2.Or || 或
    3.4.3.Xor  异或(不同时)
    3.4.4.! Not 非
3.5.比较运算符
    ==,!==,===,!==,<,>,<=,>=
3.6.三目运算符
    条件 ? 表达式 : 表达式2
3.7.特殊运算符 
    @错误控制符
    & 地址引用符
4.流程控制
    4.1.if(){ }else{}  
        if()[}else if(){}
        执行语句仅有一条时可省略{}
        第二种写法
        if():
          表达式1;表达式2;
        elseif():
            表达式1;表达式2;
    4.2.switch/case 
    4.3.while(){}
        while():
            ......
        endwhile;
    4.4.do{}while()
    4.5.for ($i=0; i<10; i++){
        statement
        }
        for ($i=0; i<10; i++):
            statement
        endfor;
    4.6.foreach 
        4.6.1.foreach (arr as $value){}
            每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步
        4.6.2.foreach (arr as $key => $value)
            单元的键名和值分别赋给$key和$value供下面代码块使用
        4.6.3.在$value前加上& 将 值的引用地址赋值给$value  使得$value可以改变数组是值 注意循环结束 最后一个$value 不会销毁需要unset()
        4.6.4.foreach 不支持用“@”来抑制错误信息的能力。 
        

5.函数

5.1.函数三要数 函数名、参数、返回值
5.2.调用、参数传递
    5.2.1.值传递  直接将值赋值给形参
    5.2.2.引用传递 使用&将变量的地址传递
    5.2.3.同一作用域中函数调用可在声明之前
5.3.自定义函数
    5.3.1.function foo($ss=""h""){}foo($d)
        函数名foo 形参$ss 参数默认值“h” 实参$d
5.4.参数的传递
    5.4.1.全局变量 将函数内部变量保存出来
        globle $dd 注意全局变量声明时不能跟直接赋值
    5.4.2.函数内部不能直接使用外部变量 
        5.4.2.1.1、使用全局数组 调用 $GLOBLES[“变量名""] 
        5.4.2.2.2、function ss() use($变量,$变量,) { }
5.5.常用系统函数
    5.5.1.sprintf()格式化输出函数
        格式 sprintf(""%s 的年龄是 %d"",""jake"",25)//jake的年龄是25
    5.5.2.date(),输出一个格式化的时间
        time()返回一个时间戳
        Microtime()返回当前时间的毫秒数和时间戳
        5.5.2.1.date(""Y-m-d H:i:s"",time())//2017-10-16 16:54:54
    5.5.3.max( )最大值,
         min() 最小值,
         rand() 随机值
         mt_rand() 更随机的函数,
          round() 四舍五入,
          ceil() 向上取整, 
          floor() 向下取整,
          abs()—绝对值, 
          sqrt() 开方, 
          pow() 求某个数的次方
    5.5.4.unction_exists(),  判断一个函数是否定义了 参数是函数的名字
        func_get_arg(), 参数实参索引,返回对应参数
        func_get_args(),  返回函数所有的实参
        func_num_args()  返回函数实参的个数
        

6.文件引入

6.1.Include    ----引入文件,同一个文件可以多次引入
    include_once    ---引入文件,同一个文件只引入一次
    require       ----引入文件,同一个文件可以多次引
    require_once---引入文件,同一个文件只引入一次
6.2.include和require的区别:
    当引入一个不存在的文件include ---会继续执行后续的代码,require报一个严重性的错代码不再执行
    

7.字符串/数组

7.1.字符串
    7.1.1.分类
        7.1.1.1.单引号字符串 单引号中变量不会解析
        7.1.1.2.双引号字符串、变量在双引号中会解析 但必须隔开或用{}包裹,注意双引号中的变量被单引号包裹也会解析
        7.1.1.3.nowdoc $str=<<<aaa 字符串 aaa; 自定义字符串
            引号自动转义 变量正常解析
        7.1.1.4.heredoc 格式$str =<<< 'bbb' 字符串 bbb; 区别 变量不会解析
    7.1.2.字符串长度
        strlen(str) 字节长度(跟文件编码有关)
        mb_strlen(str,'utf-8,) 指定编码字符长度
        字符串下标是按照字节计算
    7.1.3.字符串函数
        strtoupper(str) 转化成大写
        strtolower(str)转化成小写
        ucfirst(str) 第一个字母大写
        strpos/strrpos(Astr,Bstr) 返回B在A中 第一/最后次出现的位置
        str_peplace(A,B,C) 字符串替换 将C中的A替换成B
        trim() 去除左右空格 ltrim()左  rtrim()右
        substr(A,B,C) 在A字符串中B位置截取到C位置[字节长度]
        mb_str(A,B,C,编码) 在A字符串中B位置截取到C位置[字符长度]
        strstr(A,B) 在A字符串中 查找B字符串 并返回B到结尾的字符串
        strrchr($str ,""B"") 返回最后一次出现B的后面的 字符
        str_repeat(str,次数) 将字符串重复  
        str_shuffle(str) 打乱顺序
7.2.数组
    7.2.1.创建数组
        7.2.1.1.显示创建 
            $arr = array(""f"",""s"",5);
            $arr = array(""name"" => ""saf"",);
        7.2.1.2.隐式创建
            $aar[]=""s"" ; 数字下标从零 自增
            $arr[""name""] = ""fsdf""; 字符下标  顺序按照内存存入顺序
    7.2.2.遍历 foreach($arr as $key =>$value){}
        数组指针函数
        1.key(arr) 当前指针位置 下标值
        current(arr) 当前指针位置 元素值;
        next(arr) 移动 指针向下一个
        prev(arr) 指针向上移动一个
        reset(), 移动指针到 第0位
        end(),移动指针到 末尾
    7.2.3.数组函数
        sort(arr) 按照值从低到高排序
        rsort() 从高到低排序
        当值为字符串时候 比较码值
        asort() 保持索引关系排序 值 正向排序
        arsort()0
        ksort() 保持索引关系 下标 正向排序
        ksort()
        shuffle() 打乱数序
        count(arr) 返回arr 元素的个数
        array_push() 在数组中添加一个元素
        array_pop() 移除数组中最后【添加的】一个元素
        array_reverse()返回一个被翻转的数组 
        in_array(A,arr) 判断数组中是否有值等于A的元素
        arrary_keys(arr) 返回数组所有的键值 
7.3.字符串数组转换
    7.3.1.implode(拼接符,arr) 数组拼接成字符串
          explode(切割符,str) 字符串切割成数组
    7.3.2.str_split(str , 字符长度) 字符串按照 字符数 切割成数组
    
    

8.数据库

8.1.介绍
    8.1.1.MySQl 数据库是甲骨文公司的一个开源的关系型数据库
    8.1.2.SQL structured  query  language  结构化查询语言
8.2.数据库组成
    8.2.1.数据库系统
        8.2.1.1.数据库+数据库管理系统+数据库服务器+数据库管理员
    8.2.2.数据库服务器
        8.2.2.1.数据库服务器值的是硬件设备,安装了数据库软件的计算机
    8.2.3.数据库管理系统
        8.2.3.1.以新建数据库,修改数据库
        常见的数据库管理系统有,MySQL  oracle  SQLserver  db2   access
    8.2.4.数据库
        8.2.4.1.数据表
        8.2.4.1.1.字段
8.3.登录/退出MySQL系统
    8.3.1.登录
        8.3.1.1.mysql   -h服务器地址  -P端口号   -u用户名   - p密码
            -h是服务器地址 本机可省略
            -P端口号 默认的端口号是3306 可以省略
            -u 用户名
            -p密码
        8.3.1.2.设置密码
            set password=password('密码')
    8.3.2.退出
        8.3.2.1.quit
                exit
                \q
8.4.数据库操作
    8.4.1.库操作
        8.4.1.1.创建库
            8.4.1.1.1.语句 create databases 库名 charset 编码 (编码可省略)
            8.4.1.1.2.注意:库名不能重复 创建时可以判断
                create databases if not exists 库名 
            8.4.1.1.3.命名要求 不能是纯数字或关键字
        8.4.1.2.显示库
            8.4.1.2.1.语句 show databases 
        8.4.1.3.删除库 drop databases 库名
        8.4.1.4.修改库
            8.4.1.4.1.MySQL不支持修改库名 
            8.4.1.4.2.字符集需改
                8.4.1.4.2.1.语句
                    alter databases 库名 charset 新字符集
                    alter databases 库名 charset = 新字符集
                    alter databases 库名 default character set 新字符集
       8.4.1.5.选择库
            8.4.1.5.1.use 库名
    8.4.2.表操作
        8.4.2.1.创建表、
            8.4.2.1.1.语句 create table 表名 (字段 类型 [属性],字段2 类型 [属性] )
        8.4.2.2.显示表
            8.4.2.2.1.语句 show tables 
            8.4.2.2.2.查看创建表单 语句 show create table 表名
        8.4.2.3.删除表
            8.4.2.3.1.drop table 表名
            8.4.2.3.2.删除时候可判断表是否存在
            drop table if exists 表名 
    8.4.3.数据的操作
        8.4.3.1.插入数据
        8.4.3.1.1.语句 
            insert into 表名 字段1,字段2  values (值1,值2)
            insert 表名  set 字段1=值1,字段2=值2
            insert into 表名 values (值1,值2...),(值1,值2...)
        8.4.3.2.查找数据
            8.4.3.2.1.语句
                Select 查找的字段(* 代表所有的字段) from 表名[前面必须后面可选][Where 查询条件][Group by 分组][Having  分组过滤条件][Order by asc|desc  排序,正序|逆序]    [Limit 限定查询的条数]
            8.4.3.2.2.所有信息 select * from 表名
            8.4.3.2.3.某个字段  select 字段,字段2 from 表名
            8.4.3.2.4.别名 select 字段1 as 新名,字段2 from 表名
            8.4.3.2.5.模糊查找 select * from 表名 where 字段 like '%包含信息%'
            8.4.3.2.6.查找并排序 select * from 表名 order by 字段 desc/asc limt 3
                limt A,B 限定显示行数 A之后的B行
            8.4.3.2.7.平均值 select avg(字段) as 别名 from 表名
        8.4.3.3.删除
            8.4.3.3.1.语句 delete from 表名 where 条件 
                如果没有条件将删除所有
            8.4.3.3.2.truncate 表名 清空表
        8.4.3.4.修改
            8.4.3.4.1.语句 update 表名 set 字段1=值1,字段2=值2 where 条件
    8.4.4.设置字段字符集
        8.4.4.1.set 字段 字符集
        8.4.4.2.show charset 显示字符集

9.交互

9.1.表单传值
    9.1.1.get
        9.1.1.1.传值: 表单: method=’get’
                接收: $_GET[‘表单元素name的值’];
        9.1.1.2.get方式通过地址栏传递 通过a标签/js可以模拟
    9.1.2.post
        9.1.2.1.表单method=’post’ 即为post传值
                后台接收: $_POST[‘表单元素name的值’];
    9.1.3.get/post区别
        9.1.3.1.get 通过地址栏显示传递 安全性低 传值<kb 
        9.1.3.2.post只能表单传递 安全性高 大小不限制
9.2.文件上传
    9.2.1.上传过程
        9.2.1.1.1、将上传文件放到服务器零时文件
        9.2.1.2.2、从临时文件移动到指定位置
    9.2.2.必要属性
        9.2.2.1.1、method='post' 传值方式
        9.2.2.2.2、enctype=""multipart/form-data""
    9.2.3.服务器接受
        9.2.3.1.$_FILES  超全局变量 二维数组
        9.2.3.1.1.$_FILES[""名""](
                name :文件名,
             )
    9.2.3.2.文件判断
        9.2.3.2.1 判断是否是HTTP POST上传的 返回bool
            is_uploaded_file() 参数:服务器临时路径$_FILES['名']['tmp_name']
        9.2.3.2.2 判断是否有错 $_FILES['...']['error'] !=0 
                错误码
                0 没有错误  上传成功
                1 上传文件超过php.ini 中upload_max_size
                2 文件超过HTML表单MAX_FILE_SIZE
                3 部分文件失败
                4 没有找到上传文件
                6 找不到临时文件夹
                7 文件写入失败
        9.2.3.2.3 判断文件大小
                $_FILES['...']['size'] 字节
        9.2.3.2.4 获取文件扩展名
                $_FILES['....']['name']
                 截取方法1
                    $str = $_FILES['....']['name'] 
                    $index = strrpos($str ,""."");
                    $need = substr($str,$index);
                截取方法2
                    $str = $_FILES['....']['name'] 
                    strrchr($str ,""."")
        9.2.3.2.5. 判断文件类型
            9.2.3.2.5.1.$_FILES['...']['type']  不可靠
            9.2.3.2.5.2.第三方
                $fs=finfo_open(FILEINFO_MIME_TYPE); 打开第三方扩展
                finfo_file($fs,临时文件); 获取返回类型
        9.2.3.2.6 构建临时文件   (系统自动)
        9.2.3.2.7 构建目标文件 move_uploaded_file(临时文件,目标文件 返回bool)
9.3.连接数据库
    9.3.1.连接数据库函数
        9.3.1.1.$link = mysqli_connect(主机,用户名,密码,库名);
            返回一个数据库连接标识
    9.3.2.执行sql语句
        9.3.2.1.$result = mysqli_query(连接标识,sql语句)
            当查询时返回结果集 增删改返回bool
    9.3.3.抓取结果集数据
        9.3.3.1.mysqli_fetch_assoc(结果集)
            返回row关联数组 每执行一次指针下移一位
        9.3.3.2.mysql_fetch_array()
            返回混合数组
        9.3.3.3.mysql_fetch_row
            返回索引数组

11.http协议

11.1.什么是http协议 yperText Transfer Protocol
    11.1.1.概念
        11.1.1.1.http是超文本传输协议,目前应用最广泛的网络协议
    11.1.2.特点
        1、简单、快速   通过地址既可传值和访问
        2、灵活 通过Header(‘content-type:text/html;charset=utf-8’)灵活是设置文件格式
        3、无连接 客户端和服务器不保持连接状态
        4、无状态 页面之间相互独立 互不影响
11.2.http协议请求
    11.2.1 请求行 包含信息
         get|post请求方式  uri信息 协议版本
    11.2.2 请求头 包含信息
        user-agent 浏览器信息
        accept 指定文件格式
        host;域名 
        connention keep-alive 长连接(5m)
        空白行表示请求头结束
    11.2.3 请求体 post方式才有请求体 内容即为传值
11.3.http响应
    11.3.1.响应行
        11.3.1.1.协议版本 状态码 状态文本
        11.3.1.2.常见状态码
             200 成功 服务器接受并处理客户端请求
             301域名永久重定向 服务器端设置
             302 域名零时重定向 header('location:https:/域名')
             304读取本地缓存
             403 没有权限
             404资源不存在
             500服务器内部错误
    11.3.2.响应头
        11.3.2.1.包含响应时间、服务器信息、脚本信息、内容类型等等
    11.3.3.空白行
    11.3.4.响应体 返回客户端的信息
11.4.cookie
    11.4.1.概念 网页缓存 由服务器端制作保存在客户端的文件
    11.4.2.设置cookie
        setcookie(名,值,过期时间,有效路径,有效域名)前三是必须
    11.4.3.读取cookie
         $_COOKIE['名']
    11.4.4.删除cookie 原理即让cookie过期 setcookie(名);
11.5.session
    11.5.1.工作原理
         客户第一次打开网页请求 服务器开启session 生成一个id作为文件名 将信息存储 并将文件名作为cookie存在客户端
         用户第二访问 请求头中携带session_id 服务器通过id来区分用户 返回信息
    11.5.2.开启session session_start()  
        不管是创建session,还是使用(session,都必须开启
        一个页面只能开启一次 需要放在页面最顶端
    11.5.3.设置/获取session
         设置 $_session['名']='值' ;值没有类型限制
         session_id() 获取当前session的id
         获取  $re = $_SESSION['值']
    11.5.4.删除
         unset 删除变量
         session_destroy(); 删除当前session文件
    11.5.5.用户禁用cookie处理
         test.php?<?php echo SID?>
        通过SID常量自传

Riki一二三
6.1k 声望1.2k 粉丝

« 上一篇
JS入门
下一篇 »
nodejs入门